package services

import (
	"errors"
	"hft/Database/admin"
	"hft/global"
)

type SellStatus struct{}

func (*SellStatus) CreateStatus(status *admin.SellStatus) error {

	res := global.OC_DB.Where("name = ?", status.Name).Or("status_code = ?", status.StatusCode).Omit("id").FirstOrCreate(&status)

	if res.Error != nil {
		return errors.New("未知错误500")
	}

	if res.RowsAffected == 0 {
		return errors.New("该状态码或者名称已存在")
	}

	return nil
}

func (*SellStatus) EditStatus(status *admin.SellStatus) error {

	var nowStatus *admin.SellStatus

	if status.ID == 0 {
		return errors.New("无效的操作")
	}

	err := global.OC_DB.First(&nowStatus, status.ID).Error

	if err != nil {
		return errors.New("找不到该状态")
	}

	err = global.OC_DB.Model(&admin.SellStatus{}).Where("id = ?", status.ID).Updates(&admin.SellStatus{
		Name:       status.Name,
		BackColor:  status.BackColor,
		TextColor:  status.TextColor,
		StatusCode: status.StatusCode,
	}).Error

	if err != nil {
		return errors.New("重复的状态码或状态名称")
	}

	return nil
}

func (*SellStatus) GetStatusList() (list []*admin.SellStatus, err error) {

	var statusList []*admin.SellStatus

	global.OC_DB.Find(&statusList)

	return statusList, nil
}

func (*SellStatus) Delete(ids []int) (err error) {

	var list []*admin.SellStatus

	global.OC_DB.Find(&list, ids)

	global.OC_DB.Model(&admin.SellStatus{}).Unscoped().Delete(&list)

	return nil

}

var SellStatusService = new(SellStatus)
